// HTTP模块
const http = require("http")
// 1.创建服务器
const server = http.createServer((req, res) => {
    // req：客户端请求对象，包含请求信息
    // res：服务器响应对象，用于向客户端发送响应
    // 请求信息
    console.log("请求方法：", req.method) // GET,POST
    console.log("请求路径：", req.url) // 请求URL
    console.log("请求头：", req.headers) // 请求头

    // 设置响应头
    res.writeHead(200, {
        'Content-Type': 'text/plain; charest=utf-8'
    })

    // 发送响应
    // 每个请求只能调用一次res.end()
    res.end("请求信息：HelloWorld")
})
// 启动服务器
server.listen(8080, () => {
    console.log("服务器在8080端口运行..")
})

// 2.HTTP客户端
// 配置请求选项
const options = {
    hostname: 'localhost', // 目标服务器域名
    port: 8080, // 端口号
    path: '/', // 请求路径
    method: 'GET' // 请求方法
}
// 创建请求
// http.request()：向外部服务器发送HTTP请求，创建返回一个ClientRequest对象
const req = http.request(options, (res) => {
    // responseData：创建一个空字符串，用于积累所有接收到的数据块
    let responseData = ''
    // 'data' 事件：每次接收到数据块时触发
    // 'end' 事件：响应数据接收完成时触发
    // chunk 是 Buffer 对象，需要转换为字符串
    // 接收数据块
    res.on('data', (chunk) => {
        console.log("chunk:", chunk)
        console.log("chunk内容：", chunk.toString())
        responseData += chunk
    })
    res.on('end', () => console.log(responseData))
})
// 发送请求
// 对于GET请求，不需要发送请求体
// 对于POST请求，可以在end()中发送数据
req.end()
